1. Field of the Invention
This invention generally relates to computer management, and more specifically, the invention relates to automatically managing operations on a computer. Even more specifically, the invention relates to methods and systems, particularly well suited for use with personal computers, for automatically managing one or more software operations based on rules provided by a user and the states or conditions of other applications on the computer.
2. Background Art
In personal computing, the behavior of the personal computer (PC) is determined by its system and application software. The behavior of one application is almost always totally independent of any other. This is because the user does not want an application's behavior to depend on whether other applications are active or not. If it were, the user would have to understand why and adapt his or her use of that application.
But there are times when it is useful to modify the behavior of an application when executed in the presence of others. A common case is when the user's expectations are that the PC's overall behavior is to be determined by one and only one application. This may be due to a prioritization on the user's part. For example, the user may be urgently in need of the results of a single application—say a programming language compiler—and may want to defer all other use of the PC for other purposes so as to reduce the amount of time he or she will have to wait. Or the user may be using the PC in a public context, say for a presentation, and want the PC to be dedicated to that purpose without interruption, either by compute-intensive processes such as an anti-virus scan or by processes that might share the display, such as instant messaging.
It is possible for the user to manually reconfigure the PC's execution environment to achieve these ends. For example, the user can use the Windows Task Manager to kill all applications and processes that might interfere with his or her desired purpose. But this manual reconfiguration requires time, effort and most importantly considerable insight into the software configuration. If not performed correctly, the reconfiguration can damage the operation of the PC, potentially rendering it unfit for any purpose. Moreover, manual reconfiguration would be required again when the PC is returned to normal operation. This may require launching applications with specific parameters, again a skill- and knowledge-intensive task that is prone to error and potential environment damage.
Were it possible to capture the tasks necessary to reconfigure the PC's execution environment in computer-readable form, and to build an engine, driven by this representation, to carry them out, the modification of the overall behavior of the PC could be automated. If it were additionally possible to recognize situations where reconfiguration is needed automatically, then the user would see a most desirable form of PC behavior in which his or her needs are recognized and accommodated automatically.